package com.bw.myrouter_api;

import android.content.Context;
import android.content.Intent;

import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;

/**
 * 路由管理器
 */
public class MyRouter {
    private static final Map<String, Class<?>> routes = new HashMap<>();

    // 初始化路由表
    public static void init() {
        try {
            // 通过反射调用所有 RouteTable$$XXX 的 loadInto 方法
            Class<?> routeTableApp = Class.forName("com.example.router.RouteTable$$app");
            //通过类得到方法
            Method loadInto = routeTableApp.getMethod("loadInto", Map.class);
            //通过反射调用方法
            loadInto.invoke(null, routes);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 构建路由请求
    public static RouterRequest build(String path) {
        return new RouterRequest(path);
    }

    // 执行跳转
    public static void navigation(Context context, RouterRequest request) {
        Class<?> targetClass = routes.get(request.getPath());
        if (targetClass == null) {
            return;
        }
        Intent intent = new Intent(context, targetClass);
        if (request.getBundle() != null) {
            intent.putExtras(request.getBundle());
        }
        context.startActivity(intent);
    }







}
